#pragma once
#include "cybertron/sensor/noise/NoiseBase.hpp"
#include <array>

#define NOISE_PI 3.14159265358979323846

CYBERTRON_BEGIN

class WhiteNoise : public NoiseBase
{
public:
	WhiteNoise(float mu = 0.0, float sigma = 1.0);
	WhiteNoise(float mu, float sigma, float muAltitude, float sigmaAltitude);
	WhiteNoise(float mu0, float sigma0, float mu1, float sigma1, float mu2, float sigma2);
	virtual ~WhiteNoise();

	vec3 update() override;
	float getMean(std::uint32_t index);
	float getSigma(std::uint32_t index);

protected:
	std::array<std::normal_distribution<float>, 3> m_distributions;
};

CYBERTRON_END